Storage modules include a memory having different areas with different bits-per-cell densities. In some situations, the storage module may determine to move data stored in a lower bit-per-cell density source area to a higher bit-per-cell density destination area of the memory. For some situations, some of the data stored in the source area may be obsolete or invalid. As such, when moving the data from the source area to the destination area, it may be desirable to move the valid data but not the invalid data. Additionally, storage modules may be capable of moving data using different copy operations. In one operation referred to as Copy Through Controller (CTC), a controller external to or “off chip” from the memory may be used to move the data. That is, data may be transferred from the memory to the controller and then back to the memory. In another operation referred to as On-chip copy (OCC) or copy-back, the copy of the data from the source area to the destination area is performed solely within the memory, i.e., without being transferred externally to the controller.
For some storage module, OCC may be desirable over CTC since OCC avoids an external data transfer. However, the ability of the storage module to use OCC instead of CTC may be limited. Additionally, when moving data, it is often desirable to minimize the amount of smaller portions of data that are moved to different destination areas, as doing so may lead to a larger number of partially obsolete areas, and in turn inefficiencies and premature aging of the memory. Accordingly, when moving data from a source area to a destination area, it may be desirable to generate a source-to-destination mapping that maximizes the number of OCC operations that the storage module may perform, while minimizing the number of times that certain source data is split and stored in separated portions of the destination area.